package br.unifor.ads.desphouse.ui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import br.unifor.ads.desphouse.business.UsuarioBusiness;
import br.unifor.ads.desphouse.entity.Usuario;
import br.unifor.ads.desphouse.exception.BusinessException;
import br.unifor.ads.desphouse.internacionalizacao.Dicionario;
import br.unifor.ads.desphouse.util.MensagemUtil;
import br.unifor.ads.desphouse.util.VariaveisAmbiente;

/**
 * 
 * @author Alex Girao
 *
 */
public class PainelAcesso extends PainelGenerico {

	private static final long serialVersionUID = 5444277663434301397L;
	private JTextField jtfChave;
	private JPasswordField jpfSenha;
	private UsuarioBusiness usuBusiness;
	private JButton jbtAcesso;

	/**
	 * Create the panel.
	 */
	public PainelAcesso() {
		super();
		usuBusiness = new UsuarioBusiness();
		iniciarComponentes();
		aplicarEventos();
		jtfChave.setText("n55l");
		jpfSenha.setText("123");
		
	}
	
	@SuppressWarnings("deprecation")
	private void acessar(){
		try{
			if(isCamposObrigatoriosPreenchidos()){
				Usuario usuario = new Usuario();
				usuario.setChave(jtfChave.getText());
				usuario.setSenha(jpfSenha.getText());
				usuario = usuBusiness.autenticar(usuario);
				if(usuario!=null){
					VariaveisAmbiente.USUARIO_ATUAL = usuario;
					telaPai.atualizarPainel(null);
				}else{
					MensagemUtil.exibirPopUpErro(this, "Os dados informados são inválidos!");
				}
			}else{
				MensagemUtil.exibirPopUpErro(this, "Os campos 'Chave' e 'Senha' são obrigatórios!");
			}
		}catch(BusinessException e){
			e.printStackTrace();
		}
	}
	
	@SuppressWarnings("deprecation")
	private boolean isCamposObrigatoriosPreenchidos(){
		String chave = jtfChave.getText();
		String senha = jpfSenha.getText();
		return chave.trim().length()>0 && senha.trim().length()>0;
	}

	@Override
	protected void aplicarEventos() {
		//eventos
		jbtAcesso.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				acessar();
			}
		});
		
	}

	@Override
	protected void iniciarComponentes() {
		JLabel jlbChave = new JLabel(Dicionario.COMUNS_CHAVE+":");
		jlbChave.setBounds(72, 48, 70, 15);
		add(jlbChave);
		
		JLabel jlbSenha = new JLabel(Dicionario.COMUNS_SENHA+":");
		jlbSenha.setBounds(72, 75, 70, 15);
		add(jlbSenha);
		
		jtfChave = new JTextField();
		jtfChave.setBounds(128, 46, 114, 19);
		add(jtfChave);
		jtfChave.setColumns(10);
		
		jpfSenha = new JPasswordField();
		jpfSenha.setBounds(128, 75, 114, 19);
		add(jpfSenha);
		
		jbtAcesso = new JButton(Dicionario.COMUNS_ACESSAR);
		jbtAcesso.setBounds(72, 211, 117, 25);
		add(jbtAcesso);
		
		JRadioButton jrbPortugues = new JRadioButton("");
		jrbPortugues.setBounds(72, 110, 21, 23);
		add(jrbPortugues);
		
		JLabel jlbPortugues = new JLabel(Dicionario.IDIOMA_PORTUGUES);
		jlbPortugues.setIcon(new ImageIcon("resources/imagens/bandeira_brasil.png"));
		jlbPortugues.setBounds(93, 115, 149, 15);
		add(jlbPortugues);
		
		JRadioButton jrbIngles = new JRadioButton("");
		jrbIngles.setBounds(72, 137, 21, 23);
		add(jrbIngles);
		
		JLabel jlbIngles = new JLabel(Dicionario.IDIOMA_INGLES);
		jlbIngles.setIcon(new ImageIcon("resources/imagens/bandeira_usa.png"));
		jlbIngles.setBounds(93, 141, 96, 15);
		add(jlbIngles);
		
		JRadioButton jrbEspanhol = new JRadioButton("");
		jrbEspanhol.setBounds(72, 160, 21, 23);
		add(jrbEspanhol);
		
		JLabel jlbEspanhol = new JLabel(Dicionario.IDIOMA_ESPANHOL);
		jlbEspanhol.setIcon(new ImageIcon("resources/imagens/bandeira_espanha.png"));
		jlbEspanhol.setBounds(93, 165, 96, 15);
		add(jlbEspanhol);
		
		JRadioButton jrbFrances = new JRadioButton("");
		jrbFrances.setBounds(72, 180, 21, 23);
		add(jrbFrances);
		
		JLabel jlbFrances = new JLabel(Dicionario.IDIOMA_FRANCES);
		jlbFrances.setIcon(new ImageIcon("resources/imagens/bandeira_franca.png"));
		jlbFrances.setBounds(93, 184, 96, 15);
		add(jlbFrances);
		
		ButtonGroup bgroup = new ButtonGroup();
		bgroup.add(jrbPortugues);
		bgroup.add(jrbIngles);
		bgroup.add(jrbEspanhol);
		bgroup.add(jrbFrances);
		jrbPortugues.setSelected(true);
		
	}
}
